www.gusucode.com > 调制识别 基于决策论的通信信号调制识别实现matlab源码程序 > moulation classification/classification rate simulink/main.m

    clear;
fb=500;fc=2000;fs=12000;Ac=1;f1=500;f2=1000;f3=1500;f4=2000;
Ns=10000;d_in=randint(1,Ns,8);
for k=1:15
    N_2ask_in=0;N_4ask_in=0;N_2fsk_in=0;N_2psk_in=0;
    N_4fsk_in=0;N_4psk_in=0;N_8psk_in=0;N_16qam_in=0;
    N_2ask_out=0;N_4ask_out=0;N_2fsk_out=0;N_2psk_out=0;
    N_4fsk_out=0;N_4psk_out=0;N_8psk_out=0;N_16qam_out=0;
  for i=1:Ns
      i
    if d_in(i)==0
            d=randint(1,300,2);s=ask2(d,fb,fc,fs,Ac);s=awgn(s,k,'measured');
            N_2ask_in=N_2ask_in+1;t=judge(s,fs,fc);
            if t==1;
                N_2ask_out=N_2ask_out+1;
            end
    elseif d_in(i)==1
        d=randint(1,300,4);s=ask4(d,fb,fc,fs,Ac);s=awgn(s,k,'measured');
        N_4ask_in=N_4ask_in+1;t=judge(s,fs,fc);
        if t==2;
            N_4ask_out=N_4ask_out+1;
        end
    elseif d_in(i)==2
        d=randint(1,300,16);s=qam16(d,fb,fc,fs,Ac);s=awgn(s,k,'measured');
        N_16qam_in=N_16qam_in+1;t=judge(s,fs,fc);
        if t==3;
            N_16qam_out=N_16qam_out+1;
        end
    elseif d_in(i)==3
        d=randint(1,300,2);s=fsk2(d,fb,f1,f4,fs,Ac);s=awgn(s,k,'measured');
        N_2fsk_in=N_2fsk_in+1;t=judge(s,fs,fc);
        if t==4;
            N_2fsk_out=N_2fsk_out+1;
        end
    elseif d_in(i)==4
        d=randint(1,300,4);s=fsk4(d,fb,f1,f2,f3,f4,fs,Ac);s=awgn(s,k,'measured');
        N_4fsk_in=N_4fsk_in+1;t=judge(s,fs,fc);
        if t==5;
            N_4fsk_out=N_4fsk_out+1;
        end
    elseif d_in(i)==5
        d=randint(1,300,2);s=psk2(d,fb,fc,fs,Ac);s=awgn(s,k,'measured');
        N_2psk_in=N_2psk_in+1;t=judge(s,fs,fc);
        if t==6;
            N_2psk_out=N_2psk_out+1;
        end
    elseif d_in(i)==6
        d=randint(1,300,4);s=psk4(d,fb,fc,fs,Ac);s=awgn(s,k,'measured');
        N_4psk_in=N_4psk_in+1;t=judge(s,fs,fc);
        if t==7;
            N_4psk_out=N_4psk_out+1;
        end
    else
       % d=randint(1,300,8);s=psk8(d,fb,fc,fs,Ac);s=awgn(s,k,'measured');
        %N_8psk_in=N_8psk_in+1;t=judge(s,fs,fc);
        %if t==8;
         %   N_8psk_out=N_8psk_out+1;
        %end
    end
  end
y_2ask(k)=N_2ask_out/N_2ask_in;y_4ask(k)=N_4ask_out/N_4ask_in;
y_2fsk(k)=N_2fsk_out/N_2fsk_in;y_4fsk(k)=N_4fsk_out/N_4fsk_in;
y_2psk(k)=N_2psk_out/N_2psk_in;y_4psk(k)=N_4psk_out/N_4psk_in;
y_16qam(k)=N_16qam_out/N_16qam_in;
%y_8psk(k)=N_8psk_out/N_8psk_in;
end
plot(y_2ask,'-*');  hold on;  grid;    plot(y_4ask,'-^');
plot(y_16qam,'-s');plot(y_2fsk,'-d'); plot(y_4fsk,'-p');
plot(y_2psk,'-v'); plot(y_4psk,'-x'); %plot(y_8psk,'-o');
xlabel('信噪比');ylabel('识别成功率');
legend('2ask','4ask','16qam','2fsk','4fsk','2psk','4psk',0)